#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <set>
#include <map>
#include <vector>
using namespace std;
const int maxn = 1e5+10;
struct node
{
	int pos;
	int t;
}st[maxn];
struct mp
{
	int val;
	int id;
}m[maxn];
bool cp(mp a,mp b)
{
	if(a.val==b.val) return a.id<b.id;
	else return a.val<b.val;
}
bool cmp(node a,node b)
{
	if(a.t==b.t) return a.pos<b.pos;
	else return a.t<b.t;
}
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		int n;
		scanf("%d",&n);
		for(int i = 0;i<n;i++)
		{
			scanf("%d %d",&st[i].pos,&st[i].t);
		}
		sort(st,st+n,cmp);	
		int cnt = 0;
		for(int i = 0;i<n;i++)
		{
			m[cnt].val = st[i].pos-st[i].t;
			m[cnt].id = i;
			cnt++;
		}
		sort(m,m+cnt,cp);
		int ans = 1;
		int flag = m[0].val;
		int sign = m[0].id;
		for(int i = 1;i<cnt;i++)
		{
			if(m[i].val==flag)
			{
				//printf("********\n");
				if(st[m[i].id].t-st[sign].t!=1) 
				{
				//	printf("%d %d %d\n",st[m[i].id].t,st[sign].t,st[m[i].id].t-st[sign].t);
					ans++;
				}
				
			}
			else ans++;
			flag = m[i].val;
			sign = m[i].id;
		}
		printf("%d\n",ans);
	}
}
